'use strict'

const titbit = require('titbit')

const app = new titbit({
  debug: true,
})

/**

  路由不指定动作、使用HTTP状态码表示请求状态、使用HTTP请求方法表示要执行的操作。

 * 
 * 
 */

/**

/user 遵循RESTful设计

GET /user/:id
GET /user

POST /user  注册
PUT /user/:id

相当于删除用户，同时要删除所有相关数据，相当于注销
DELETE /user/:id
但是此功能很少有网站提供。

状态码200表示成功，否则失败。

 * 
 */

/**

路由指明了动作：
/delete-cache  GET
/clear-cache   GET
这种方案容易遭受CSRF攻击。


遵循RESTful：
DELETE /cache


 * 
 * 
 */

/** 以上 解决的是 路由设计问题   ***/


app.get('/content/:id', async c => {
  /**
  
    {
      id: '',
      conent: '',
      title: ''
    }
  
   */
  //返回具体资源
  //没有则返回404状态码
})

app.get('/content', async c => {
  /**
  
  [
    {
      id: ''
      title: '',
      update_time: ''
    },
    {
      id: ''
      title: '',
      update_time: ''
    },
    {
      id: ''
      title: '',
      update_time: ''
    }
  ]

   */
  //返回列表
  //没有也要返回空数组
})

app.post('/content', async c => {
  //创建资源
  //成功后返回创建的资源ID。
  /*
    失败返回：
      400 提交数据错误或其他错误情况导致无法完成
      500 服务端处理失败
      403 没有操作权限，若是用户验证
      ...
  */
})

/**
 * 提交参数：请求体应该提交一个JSON格式的说明。
 * 对于更新操作来说，可能更新某个字段，也可能更新整个内容。
 * 或者还有其他的更新需求。
 */
app.put('/content/:id', async c => {
  //更新资源
  //成功后返回成功更新的数据条数。
  //失败参考post说明
})

app.delete('/content/:id', async c => {
  //删除资源
  //成功后返回成功删除的数据条数。
  //失败返回值参考post说明
})

/** ---------- 以上是有些理想化的API设计 -------- */

/**

  /admin
  /selfadmin

  错误的示例：/update-passwd

 * 
 * 
 */
